package dao

import (
	"time"
)

// 这是 GiftCode 的全局公开dao对象，被service层调用!
var GiftCodeDao = giftCodeDao{}

// 物品兑换码
// 这是 gift_code表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type GiftCode struct {
	Id        int32     `json:"id" form:"id" db:"id" v:"id"`
	GiftIf    int32     `json:"gift_if" form:"gift_if" db:"gift_if" v:"gift_if"`             // 物品ID
	Code      string    `json:"code" form:"code" db:"code" v:"code"`                         // 兑换码
	Exchange  int8      `json:"exchange" form:"exchange" db:"exchange" v:"exchange"`         // 是否已兑换:0-否;1-是
	Uid       int32     `json:"uid" form:"uid" db:"uid" v:"uid"`                             // 兑换者UID
	UpdatedAt time.Time `json:"updated_at" form:"updated_at" db:"updated_at" v:"updated_at"` // 最后更新时间

}

// 注意:这是 GiftCode 的私有dao对象，只能在dao层内使用!
type giftCodeDao struct {
	InsertTemplate func(arg GiftCode) (int64, error)          //插入一条记录
	UpdateTemplate func(arg GiftCode) (int64, error)          //更新一条记录
	DeleteTemplate func(id int64) (int64, error)              `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (GiftCode, error)           `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg GiftCodeList) ([]GiftCode, error) //模糊分页查询
}

/*
// 这是 gift_code 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type GiftCodePostman struct {
id
gift_if
code
exchange
uid
updated_at

}*/

// 这是 gift_code 表的批量请求参数
type GiftCodeReq struct {
	List []GiftCode `json:"list" form:"list"`
}

// 这是 giftCodeDao.List()方法的请求参数
type GiftCodeList struct {
	Page
}
